﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


using System.ComponentModel;


namespace HA.ModFlow.Domain.DomainLayer
{
    [Serializable]
    public class UZFPeriod : INotifyPropertyChanged, ICloneable
    {

        #region 构造函数

        public UZFPeriod()
        { 
        
        }

        public UZFPeriod(int rCount, int cCount)
        {


            //默认值全部为 0
            _FINF = new double[rCount, cCount];
            _PET = new double[rCount, cCount];
            _EXTDP = new double[rCount, cCount];
            _EXTWC = new double[rCount, cCount];

        }

        #endregion


        #region 字段属性




       //下面的  10  个数组数据包含两种：6中和应力期无关，4中和应力期有关


        //4中
        
        double[,] _FINF;
        /// <summary>
        /// 定义每个网格单元的入渗速率
        /// </summary>
        public double[,] FINF
        {
            get { return _FINF; }
            set { _FINF = value; }
        }


        double[,] _PET;
        /// <summary>
        /// 
        /// </summary>
        public double[,] PET
        {
            get { return _PET; }
            set { _PET = value; }
        }

    
        double[,] _EXTDP;
        /// <summary>
        /// 定义每个网格单元的et消失深度
        /// </summary>
        public double[,] EXTDP
        {
            get { return _EXTDP; }
            set { _EXTDP = value; }
        }

        double[,] _EXTWC;
        /// <summary>
        /// 
        /// </summary>
        public double[,] EXTWC
        {
            get { return _EXTWC; }
            set { _EXTWC = value; }
        }


        //6种   存放到了 UZF 中
      





        double _multiplier = 1.0;

        public double Multiplier
        {
            get { return _multiplier; }
            set
            {
                _multiplier = value;
                OnPropertyChanged("Multiplier");
            }
        }



        #endregion


        #region 公共方法


        #endregion


        #region 内部方法


        #endregion


        #region INotifyPropertyChanged

        [field: NonSerialized]
        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion


        #region ICloneable

        public object Clone()
        {
            UZFPeriod obj = new UZFPeriod();

            obj = (UZFPeriod)this.MemberwiseClone();

            obj._FINF = (double[,])this._FINF.Clone();
            obj._PET = (double[,])this._PET.Clone();
            obj._EXTDP = (double[,])this._EXTDP.Clone();
            obj._EXTWC = (double[,])this._EXTWC.Clone();

        
            return obj;
        }

        #endregion



    }
}
